package com.caiyouxi.goods.model;

import java.io.Serializable;
import java.util.Date;

/**
 * chensong
 * 商品信息
 */
public class GoodsInfo implements Serializable {
    
    private Long id; //商品Id
    
    private String title;//商品名称
    
    private String sub_title;//商品子标题
    
    private String ad_title;//推广语
    
    private Integer category_id;//商品品类代码。这里只能是 goods_category：商品品类-OK 表中的二级品类代码。
    
    private Integer stock;//商品库存。
    
    private String reduce_stock;//减库存方式。ORDERED：下单时减库存；PAID：支付后减库存。UNLIMITED：无限库存，不需要减库存处理。
    
    private Integer is_digital_goods;//是否数字商品。数字商品不需要物流信息。实物商品买家在下单时需要填写收货地址；卖家在发布商品的时候需要配置物流模板。
    
    private Integer version;//商品信息版本号。商品每次发布时+1，并存入 versions：商品版本信息-OK 表中一份。
    
    private String detail;//商品详情
    
    private String remark;//备注，管理用
    
    private Date effective_time;//生效日期。到该时间点自动上架（如果 status 设置为 ON）
    
    private Date expire_time;//失效日期。到期自动下架（下架后 off_reason 会被设置为 EXPIRED）
    
    private Integer seller_user_id;//卖家用户编号

    private String unit;//商品的单位
    
    private String status;//商品状态。    ON：上架；    OFF：下架；    IN_AUDIT：上架审核中
    
    private String off_reason;//下架原因。BY_SELLER：卖家手工下架； EXPIRED：商品超过设置的有效期，自动下架。  OUT_OF_STOCK：售空，卖完自动下架；ILLEGAL：违规被后台下架；违规下架的商品，下次再上架自动进入审核流程。 后续根据业务需要可扩充。
    
    private boolean is_deleted;//是否被删除。0-否；1-是。
    
    private Integer is_reserved;//是否系统内置的保留商品。系统保留商品将不允许通过界面被修改，只能有开发人员直接修改表数据。
    
    private String properties;//商品属性信息。根据品类的配置，该字段保存该商品的扩展属性信息。参见 goods_properties_config：商品/订单的属性配置-OK 定义
    
    private Integer market_price;//定价/标价

    private Integer app_id;//对应的应用编号

    public Integer getApp_id() {
        return app_id;
    }

    public void setApp_id(Integer app_id) {
        this.app_id = app_id;
    }

    private Integer price;//实际售价
    
    private String currency_code;//定价所使用的货币代码
    
    private String currency_type;//定价所使用的货币类型，RMB/VC，冗余，必须和 currency_code 对应。
    
    private String account_code;//主账号或专用账号代码。
    
    private String allowed_coupon_types;//该商品允许的券种。只能在 goods_category：商品品类-OK 表的allowed_coupon_types 配置的范围内，并且，price 中的 currency_code和 coupon 的 currency_code 一致的才可以被允许使用，如果 price 没有设置对应 currency_code那么相关的券种自动不可用。
    
    private Date create_time;//商品创建时间
    
    private Date last_update_time;//商品最后修改时间 

    public String getUnit() {
        return unit;
    }

    public void setUnit(String unit) {
        this.unit = unit;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getSub_title() {
        return sub_title;
    }

    public void setSub_title(String sub_title) {
        this.sub_title = sub_title;
    }

    public String getAd_title() {
        return ad_title;
    }

    public void setAd_title(String ad_title) {
        this.ad_title = ad_title;
    }

    public Integer getCategory_id() {
        return category_id;
    }

    public void setCategory_id(Integer category_id) {
        this.category_id = category_id;
    }

    public Integer getStock() {
        return stock;
    }

    public void setStock(Integer stock) {
        this.stock = stock;
    }

    public String getReduce_stock() {
        return reduce_stock;
    }

    public void setReduce_stock(String reduce_stock) {
        this.reduce_stock = reduce_stock;
    }

    public Integer getIs_digital_goods() {
        return is_digital_goods;
    }

    public void setIs_digital_goods(Integer is_digital_goods) {
        this.is_digital_goods = is_digital_goods;
    }

    public Integer getVersion() {
        return version;
    }

    public void setVersion(Integer version) {
        this.version = version;
    }

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Date getEffective_time() {
        return effective_time;
    }

    public void setEffective_time(Date effective_time) {
        this.effective_time = effective_time;
    }

    public Date getExpire_time() {
        return expire_time;
    }

    public void setExpire_time(Date expire_time) {
        this.expire_time = expire_time;
    }

    public Integer getSeller_user_id() {
        return seller_user_id;
    }

    public void setSeller_user_id(Integer seller_user_id) {
        this.seller_user_id = seller_user_id;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getOff_reason() {
        return off_reason;
    }

    public void setOff_reason(String off_reason) {
        this.off_reason = off_reason;
    }

    public boolean isIs_deleted() {
        return is_deleted;
    }

    public void setIs_deleted(boolean is_deleted) {
        this.is_deleted = is_deleted;
    }

    public Integer getIs_reserved() {
        return is_reserved;
    }

    public void setIs_reserved(Integer is_reserved) {
        this.is_reserved = is_reserved;
    }

    public String getProperties() {
        return properties;
    }

    public void setProperties(String properties) {
        this.properties = properties;
    }

    public Integer getMarket_price() {
        return market_price;
    }

    public void setMarket_price(Integer market_price) {
        this.market_price = market_price;
    }

    public Integer getPrice() {
        return price;
    }

    public void setPrice(Integer price) {
        this.price = price;
    }

    public String getCurrency_code() {
        return currency_code;
    }

    public void setCurrency_code(String currency_code) {
        this.currency_code = currency_code;
    }

    public String getCurrency_type() {
        return currency_type;
    }

    public void setCurrency_type(String currency_type) {
        this.currency_type = currency_type;
    }

    public String getAccount_code() {
        return account_code;
    }

    public void setAccount_code(String account_code) {
        this.account_code = account_code;
    }

    public String getAllowed_coupon_types() {
        return allowed_coupon_types;
    }

    public void setAllowed_coupon_types(String allowed_coupon_types) {
        this.allowed_coupon_types = allowed_coupon_types;
    }

    public Date getCreate_time() {
        return create_time;
    }

    public void setCreate_time(Date create_time) {
        this.create_time = create_time;
    }

    public Date getLast_update_time() {
        return last_update_time;
    }

    public void setLast_update_time(Date last_update_time) {
        this.last_update_time = last_update_time;
    }
}
